﻿using StackExchange.Redis.Configuration;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCS_Service.DomianService.Models;
using WCS_Service.Models;

namespace WCS_Service.DomianService.Interface
{
    public interface IRCSDomainService
    {
        event Func<List<AgvInfoModel>,string, string, Task> AgvInfoChange;

        event Func<List<TaskStatusModel>, string, string, Task> TaskInfoChange;

        event Func<List<PodBerthAndMatInfoModel>, string, string, Task> PodBerthAndMatChange;

        event Func<List<MapInfoModel> , string, string, Task> MapInfoChange;

        event Func<ResultModel, string, string, Task> ResultChange;

        event Func<ResultDataModel, string, string, Task> ResultDataChange;
        //滚筒数据更新
        event Func<string,RollerReadInfoModel,Task> RollerInfoChange;

        event Func<string,WarnModel,Task> WarnInfoChange;

        //离开公共巷道询问
        event Func<string, string, string, Task> ExitComRoadWayChange;
        //进入公共巷道询问
        event Func<string, string,string, Task> EnterComRoadWayChange;
        //执行任务完成
        event Func<string, string, Task> TaskEndChange;
        //充电请求
        event Func<string, string, Task> ChargeReportChange;
        //任务暂停
        event Func<string, string, string, string, Task> TaskPauseChange;
        Task InitRcsInfoAsync();

        Task<Func<string, int, Task>?> GetRcsService(string messageType);
        Task<RcsApiResultModel> StructureRcsParaAsync(string rcs, string api, object para, bool isResult);

        Task<AgvPeripheralInfoModel> StructAgvPeripheralParaAsync(string peripheral, object para);
    }
}
